package com.glr.company.controller;

import com.glr.common.contants.CodeEnum;
import com.glr.common.utils.ResultUtils;
import com.glr.company.entity.CompanyEntity;
import com.glr.company.service.CompanyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * @author GLoRy
 * @date 2021/6/1 15:55
 */
@RestController("companyController")
@CrossOrigin
@RequestMapping("/company")
public class CompanyController {

    @Autowired
    private CompanyService companyService;

    /**
     * 查询所有的企业
     *
     * @return 所有企业数据
     */
    @GetMapping("/findAll")
    public ResultUtils findAll() {
        return new ResultUtils(true, CodeEnum.SUCCEED, "查询数据成功", companyService.findAll());
    }

    /**
     * 查询所有的企业带分页
     *
     * @param page     当前页
     * @param pageSize 每页条数
     * @return 所有企业分页数据
     */
    @GetMapping("/findByPage/{page}/{pageSize}")
    public ResultUtils findByPage(@PathVariable Integer page, @PathVariable Integer pageSize) {
        Page<CompanyEntity> entities = companyService.findByPage(page, pageSize);
        return new ResultUtils(true, CodeEnum.SUCCEED, "查询数据成功", entities);
    }

    /**
     * 条件查询
     *
     * @param conditionMap 条件Map
     * @return 条件查询结果集
     */
    @PostMapping("/findByCondition")
    public ResultUtils findByCondition(@RequestBody Map<?, ?> conditionMap) {
        return new ResultUtils(true, CodeEnum.SUCCEED, "数据查询成功", companyService.findByCondition(conditionMap));
    }

    /**
     * 带分页的条件查询
     *
     * @param conditionMap 条件Map
     * @param page         当前页
     * @param pageSize     每页条数
     * @return 条件分页查询结果集
     */
    @PostMapping("/findByCondition/{page}/{pageSize}")
    public ResultUtils findByConditionPage(@RequestBody Map<?, ?> conditionMap, @PathVariable int page, @PathVariable int pageSize) {
        Page<CompanyEntity> entities = companyService.findByCondition(conditionMap, page, pageSize);
        return new ResultUtils(true, CodeEnum.SUCCEED, "数据查询成功", entities);
    }

    /**
     * 企业的增加
     *
     * @param company 公司数据
     * @return 保存信息
     */
    @PostMapping("/save")
    public ResultUtils saveCompany(@RequestBody CompanyEntity company) {
        companyService.save(company);
        return new ResultUtils(true, CodeEnum.SUCCEED, "保存成功");
    }

    /**
     * 企业的修改
     *
     * @param company 公司
     * @param id      公司id
     * @return 修改信息
     */
    @PutMapping("/update/{id}")
    public ResultUtils updateCompany(@RequestBody CompanyEntity company, @PathVariable String id) {
        company.setCompanyId(Integer.valueOf(id));
        companyService.update(company);
        return new ResultUtils(true, CodeEnum.SUCCEED, "修改成功");
    }

    /**
     * 企业的启动
     *
     * @param id 公司id
     * @return 启动结果
     */
    @PutMapping("/enable/{id}")
    public ResultUtils enableCompany(@PathVariable String id) {
        companyService.enable(Integer.valueOf(id));
        return new ResultUtils(true, CodeEnum.SUCCEED, "启用成功");
    }

    /**
     * 企业的禁用
     *
     * @param id 公司id
     * @return 禁用结果
     */
    @PutMapping("/disable/{id}")
    public ResultUtils disableCompany(@PathVariable String id) {
        companyService.disable(Integer.valueOf(id));
        return new ResultUtils(true, CodeEnum.SUCCEED, "禁用成功");
    }

    /**
     * 企业的删除
     *
     * @param id 公司id
     * @return 删除信息
     */
    @DeleteMapping("/delete/{id}")
    public ResultUtils deleteCompany(@PathVariable String id) {
        companyService.deleteById(Integer.valueOf(id));
        return new ResultUtils(true, CodeEnum.SUCCEED, "删除成功");
    }
}